package com.novel.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


/**
 * 字符串加密工具类
 */
@Slf4j
public class EncryptionUtils {

    /**
     * MD5加密
     * @param str
     * @return
     */
    public static String getMD5Str(String str) {
        byte[] digest = null;
        try {
            MessageDigest md5 = MessageDigest.getInstance("md5");
            digest = md5.digest(str.getBytes("utf-8"));
        } catch (NoSuchAlgorithmException e) {
            log.warn("加密过程中，触发异常", e);
        } catch (UnsupportedEncodingException e) {
            log.warn("加密过程中，触发异常", e);
        }
        //16是表示转换为16进制数
        String md5Str = new BigInteger(1, digest).toString(16);
        return md5Str;
    }

    /**
     * MD5加盐加密
     * 左右都有进行加密
     * @param str
     * @param right
     * @param left
     * @return
     */
    public static String getMD5Str(String str, String right, String left) {
        return getMD5Str(right + str + left);
    }

    /**
     * 普通MD5加盐加密
     * @param str
     * @param sault
     * @return
     */
    public static String getMD5Str(String str, String sault) {
        return getMD5Str(str + sault);
    }

}